package com.ld.hpfs.service.impl;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import com.ld.hpfs.common.utils.Const;
import com.ld.hpfs.dao.DataTranMapper;
import com.ld.hpfs.pojo.User;
import com.ld.hpfs.service.DataTranService;
import com.ld.hpfs.web.interseptor.WebConstants;


@Service
public class DataTranSerivceImpl implements DataTranService{
	
	private static final Logger logger = LoggerFactory.getLogger(ExpressPrintServiceImpl.class);
	@Autowired
	private DataTranMapper dataTranMapper;
	
	//导入数据接口实现
	@Override
	public int insertImportTrans(HashMap<String, Object> param) {
		try{
			return dataTranMapper.insertImportTrans(param);
		}
		catch(Exception e){
			logger.error(e.getMessage());
			return 0;
		}
	}
	
	//执行存储过程sp_tax_transaction接口实现
	@Override
	public int runProcedureTransaction(HashMap<String, Object> param) {
		try{
			return dataTranMapper.runProcedureTransaction(param);
		}
		catch(Exception e){
			logger.error(e.getMessage());
			return 0;
		}
	}

	//执行存储过程sp_tax_rules_main接口实现
	@Override
	public int runProcedureRulesMain() {
		try{
			return dataTranMapper.runProcedureRulesMain();
		}
		catch(Exception e){
			logger.error(e.getMessage());
			return 0;
		}
	}

	// 执行全过程接口实现

	@Override
	public void doProcess(HttpSession session, HttpServletRequest request,
			HttpServletResponse response, PrintWriter writer) {

		try {

			// 获取验证key	
			String key = request.getParameter("key");

			// key验证不对直接返回
			if (!key.equals(Const.PROPERTIES.getProperty("dataTransKey"))) {
				return;
			}
			// 获取存储过程用公司代码
//			String cpn_id = request.getParameter("company");
			
			// 按时间随机数作为导入编号
			String batch_no = String.valueOf(System.currentTimeMillis());
			//公司id集
			Set<String> cpn_ids = new HashSet<String>();
			
			// 解析xml
			DocumentBuilder domBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
			Document doc = domBuilder.parse(request.getInputStream());
			Element root = doc.getDocumentElement();
			NodeList students = root.getChildNodes();
			
			if (students != null) {
				for (int i = 0, size = students.getLength(); i < size; i++) {
					Node student = students.item(i);

					// 新建一个HashMap作为插入数据的容器
					HashMap<String, Object> data = new HashMap<String, Object>();

					for (Node node = student.getFirstChild(); node != null; node = node.getNextSibling()) {
						if (node.getNodeType() == Node.ELEMENT_NODE) {

							// 加入参数
							if (node.getNodeName().equals("COMPANY_ID")) {
								if (node.getFirstChild() != null) {
									data.put("COMPANY_ID", node.getFirstChild()
											.getNodeValue());
									//在公司id集里面添加一个公司id
									cpn_ids.add(node.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_DOCUMENT_NO")) {
								if (node.getFirstChild() != null) {
									data.put("H_DOCUMENT_NO", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_DOCUMENT_DATE")) {
								if (node.getFirstChild() != null) {
									data.put("H_DOCUMENT_DATE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_DOCUMENT_TYPE")) {
								if (node.getFirstChild() != null) {
									data.put("H_DOCUMENT_TYPE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_DOC_TYPE_CODE")) {
								if (node.getFirstChild() != null) {
									data.put("H_DOC_TYPE_CODE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_CUST_ID")) {
								if (node.getFirstChild() != null) {
									data.put("H_CUST_ID", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_CUST_CODE")) {
								if (node.getFirstChild() != null) {
									data.put("H_CUST_CODE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_CUST_NAME_CHN")) {
								if (node.getFirstChild() != null) {
									data.put("H_CUST_NAME_CHN", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_CUST_NAME_ENG")) {
								if (node.getFirstChild() != null) {
									data.put("H_CUST_NAME_ENG", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_TAX_CODE")) {
								if (node.getFirstChild() != null) {
									data.put("H_TAX_CODE", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_TAX_AMOUNT")) {
								if (node.getFirstChild() != null) {
									data.put("H_TAX_AMOUNT", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_BANK_ACCOUNT")) {
								if (node.getFirstChild() != null) {
									data.put("H_BANK_ACCOUNT", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_ADDRESS")) {
								if (node.getFirstChild() != null) {
									data.put("H_ADDRESS", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_TAX_CONTROL_TYPE")) {
								if (node.getFirstChild() != null) {
									data.put("H_TAX_CONTROL_TYPE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REMARK")) {
								if (node.getFirstChild() != null) {
									data.put("H_REMARK", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_AMOUNT_CUR_TOTAL")) {
								if (node.getFirstChild() != null) {
									data.put("H_AMOUNT_CUR_TOTAL", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_AMOUNT_SRC_TOTAL")) {
								if (node.getFirstChild() != null) {
									data.put("H_AMOUNT_SRC_TOTAL", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_TOTAL_LINE_NO")) {
								if (node.getFirstChild() != null) {
									data.put("H_TOTAL_LINE_NO", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_OPERATOR")) {
								if (node.getFirstChild() != null) {
									data.put("H_OPERATOR", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_CHECKER")) {
								if (node.getFirstChild() != null) {
									data.put("H_CHECKER", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REMITTEE")) {
								if (node.getFirstChild() != null) {
									data.put("H_REMITTEE", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_DOC_STATUS")) {
								if (node.getFirstChild() != null) {
									data.put("H_DOC_STATUS", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_DOC_LOCKED")) {
								if (node.getFirstChild() != null) {
									data.put("H_DOC_LOCKED", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_GOODS_LIST_NAME")) {
								if (node.getFirstChild() != null) {
									data.put("H_GOODS_LIST_NAME", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_SELLER_NAME")) {
								if (node.getFirstChild() != null) {
									data.put("H_SELLER_NAME", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_SELLER_TAX_CODE")) {
								if (node.getFirstChild() != null) {
									data.put("H_SELLER_TAX_CODE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_SELLER_ADDRESS")) {
								if (node.getFirstChild() != null) {
									data.put("H_SELLER_ADDRESS", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals(
									"H_SELLER_BANK_ACCOUNT")) {
								if (node.getFirstChild() != null) {
									data.put("H_SELLER_BANK_ACCOUNT", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_INVOICE_CODE")) {
								if (node.getFirstChild() != null) {
									data.put("H_INVOICE_CODE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_INVOICE_NO")) {
								if (node.getFirstChild() != null) {
									data.put("H_INVOICE_NO", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_INVOICE_DATE")) {
								if (node.getFirstChild() != null) {
									data.put("H_INVOICE_DATE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_PRICE_WAY")) {
								if (node.getFirstChild() != null) {
									data.put("H_PRICE_WAY", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_VOID_FLAG")) {
								if (node.getFirstChild() != null) {
									data.put("H_VOID_FLAG", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF01")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF01", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF02")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF02", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF03")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF03", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF04")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF04", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF05")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF05", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF06")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF06", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF07")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF07", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF08")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF08", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF09")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF09", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF10")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF10", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF11")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF11", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF12")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF12", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF13")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF13", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF14")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF14", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF15")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF15", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF16")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF16", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF17")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF17", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF18")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF18", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF19")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF19", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF20")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF20", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF21")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF21", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF22")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF22", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF23")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF23", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF24")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF24", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF25")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF25", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF26")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF26", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF27")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF27", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF28")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF28", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF29")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF29", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("H_REF30")) {
								if (node.getFirstChild() != null) {
									data.put("H_REF30", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_ID_HEAD_ID")) {
								if (node.getFirstChild() != null) {
									data.put("D_ID_HEAD_ID", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_GOODS_LINE")) {
								if (node.getFirstChild() != null) {
									data.put("D_GOODS_LINE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_GOODS_CODE")) {
								if (node.getFirstChild() != null) {
									data.put("D_GOODS_CODE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_GOODS_NAME")) {
								if (node.getFirstChild() != null) {
									data.put("D_GOODS_NAME", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_GOODS_UNIT")) {
								if (node.getFirstChild() != null) {
									data.put("D_GOODS_UNIT", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_SPEC")) {
								if (node.getFirstChild() != null) {
									data.put("D_SPEC", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_TAX_ITEM")) {
								if (node.getFirstChild() != null) {
									data.put("D_TAX_ITEM", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_TAX_RATE")) {
								if (node.getFirstChild() != null) {
									data.put("D_TAX_RATE", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_TAX_AMOUNT")) {
								if (node.getFirstChild() != null) {
									data.put("D_TAX_AMOUNT", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_QUANTITY")) {
								if (node.getFirstChild() != null) {
									data.put("D_QUANTITY", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_PRICE_CUR")) {
								if (node.getFirstChild() != null) {
									data.put("D_PRICE_CUR", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_AMOUNT_CUR")) {
								if (node.getFirstChild() != null) {
									data.put("D_AMOUNT_CUR", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REMARK")) {
								if (node.getFirstChild() != null) {
									data.put("D_REMARK", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_DISCOUNT_SUM")) {
								if (node.getFirstChild() != null) {
									data.put("D_DISCOUNT_SUM", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_DISCOUNT_TAX")) {
								if (node.getFirstChild() != null) {
									data.put("D_DISCOUNT_TAX", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_DISCOUNT_RATE")) {
								if (node.getFirstChild() != null) {
									data.put("D_DISCOUNT_RATE", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("RETURN_FLAG")) {
								if (node.getFirstChild() != null) {
									data.put("RETURN_FLAG", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("DISCOUNT_FLAG")) {
								if (node.getFirstChild() != null) {
									data.put("DISCOUNT_FLAG", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REBATE_AMOUNT")) {
								if (node.getFirstChild() != null) {
									data.put("D_REBATE_AMOUNT", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_PRICE_WAY")) {
								if (node.getFirstChild() != null) {
									data.put("D_PRICE_WAY", node
											.getFirstChild().getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF01")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF01", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF02")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF02", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF03")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF03", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF04")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF04", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF05")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF05", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF06")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF06", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF07")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF07", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF08")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF08", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF09")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF09", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF10")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF10", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF11")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF11", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF12")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF12", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF13")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF13", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF14")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF14", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF15")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF15", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF16")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF16", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF17")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF17", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF18")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF18", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF19")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF19", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF20")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF20", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF21")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF21", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF22")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF22", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF23")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF23", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF24")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF24", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF25")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF25", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF26")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF26", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF27")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF27", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF28")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF28", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF29")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF29", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("D_REF30")) {
								if (node.getFirstChild() != null) {
									data.put("D_REF30", node.getFirstChild()
											.getNodeValue());
								}
							}
							if (node.getNodeName().equals("ABS_AMOUNT_CUR")) {
								if (node.getFirstChild() != null) {
									data.put("ABS_AMOUNT_CUR", node.getFirstChild()
											.getNodeValue());
								}
							}
						}
					}
					// 如果不为空，向数据库插入一条数据
					if (!data.isEmpty()) {
						data.put("BATCH_NO", batch_no);
						dataTranMapper.insertImportTrans(data);
					}
				}

				//执行存储过程sp_tax_rules_main
				dataTranMapper.runProcedureRulesMain();
				
				//执行存储过程sp_tax_transaction
				for(String s : cpn_ids){
					HashMap<String,Object> procedureParam = new HashMap<String,Object>();
					procedureParam.put("cpn_id", s);
					procedureParam.put("batch_no", batch_no);
					dataTranMapper.runProcedureTransaction(procedureParam);	
				}
			}
			writer.print("<result>0</result>");
		}
		catch (Exception e) {
			writer.print("<result>" + e.getMessage() + "</result>");
			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
		}
		finally{
			writer.flush();
			writer.close();
		}
	}
}
